package mtn.bowen.yan.server.service;

import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import mtn.bowen.yan.server.enums.DishesTypeEnum;
import mtn.bowen.yan.server.enums.WeekEnum;
import mtn.bowen.yan.server.model.VarietyDishes;

import java.util.List;

/**
 * @author <a href=mailto:yanbowen90@foxmail.com> bowen.yan </a>
 * @version 1.0
 * @description: TODO
 * @date 2021-10-23 9:41 PM
 */
public interface VarietyDishesService {

    /**
     * 获取所有菜品类型
     *
     * @return 全部菜品类型
     */
    List<VarietyDishes> getAllDishes();

    /**
     * 按照类型获取菜品
     *
     * @param typeEnum 类型
     * @return 此类型的所有菜品
     */
    List<VarietyDishes> getDishesByType(DishesTypeEnum typeEnum);

    /**
     * 按照类型与星期获取菜品
     *
     * @param typeEnum 类型
     * @param weekEnum 星期
     * @return 此类型的所有菜品
     */
    List<VarietyDishes> getDishesByTypeAndWeek(DishesTypeEnum typeEnum, WeekEnum weekEnum);

    /**
     * 按照类型与星期获取菜品
     *
     * @param typeEnum 类型
     * @param weekEnum 星期
     * @return 此类型的所有菜品
     */
    List<VarietyDishes> getDishesByTypeAndWeek(int typeEnum, int weekEnum);

    /**
     * 设置TabPane内容
     *
     * @param tabPane 上下文
     * @param typeEnum 菜品类型
     * @param weekEnum 菜品类型
     */
    void setTabPane(TabPane tabPane, DishesTypeEnum typeEnum, WeekEnum weekEnum);

    /**
     * 存储食谱类型种类
     * @param vDishes 菜品类型种类
     */
    Integer saveVarietyDishes(VarietyDishes vDishes);


    /**
     * 生成菜品种类图片
     * @param varietyDishes 每种类型的种类数据
     * @return Tab
     */
    Tab makeKindTab(VarietyDishes varietyDishes);
}
